package com.cw.lang.common.framework.listener;

import com.github.rholder.retry.Attempt;
import com.github.rholder.retry.RetryListener;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class MyRetryListener implements RetryListener {

    @Override
    public <Boolean> void onRetry(Attempt<Boolean> attempt) {

        // 第几次重试,(注意:第一次重试其实是第一次调用)
        log.info("第几次重试【{}】",attempt.getAttemptNumber());
        // 距离第一次重试的延迟
        log.info("距离第一次重试的延迟【{}】",attempt.getDelaySinceFirstAttempt());
        // 重试结果: 是异常终止, 还是正常返回
        log.info("重试原因：异常终止【{}】,结果返回【{}】",attempt.hasException(),attempt.hasResult());
        // 是什么原因导致异常
        if (attempt.hasException()) {
            log.info("异常原因【{}】",attempt.getExceptionCause().toString());
        }
        if(attempt.hasResult()){
            // 正常返回时的结果
            log.info("返回的结果【{}】",attempt.getResult());
        }
    }
}
